﻿
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- saved from url=(0014)about:internet -->
<html xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:mssdk="winsdk" xmlns:script="urn:script" xmlns:build="urn:build" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="Description" content="The General Purpose Input/Output (GPIO) extension commands display the software state of GPIO controllers."/>
<meta name="MSHAttr" content="PreferredSiteName:MSDN"/>
<meta name="MSHAttr" content="PreferredLib:/library/windows/hardware"/>
<title>GPIO Extensions</title>



<link rel="STYLESHEET" type="text/css" HREF="../common/backsdk4.css"/>





<style>
html,div { margin: 0; padding: 0;}

body {
	padding: 0px;
	margin: 0px;
	overflow: auto;
	height: 100%;
}

#winchm_template_button{
	float: right;
	width: 93px;
	top: 7px;
	position: relative;
	text-align: right;
	right: 5px;
	height: auto;
}

#winchm_template_top{
	padding: 0px;
	margin: 0px;
	border-bottom: 1px solid #9B9B9B;
	background-color: #B1CEFE;
}

#winchm_template_navigation{
	margin: 0px;
	padding-top: 7px;
	padding-left: 7px;
	padding-bottom: 3px;
	padding-right: 0px;
	font-size: 8.5pt;
	font-family: Arial, Helvetica, sans-serif;
	font-weight: normal;
	color: #585858;
}

#winchm_template_title{
	margin: 0px;
	padding-top: 4px;
	padding-left: 7px;
	padding-bottom: 7px;
	padding-right: 0px;
	font-size: 18px; 
	font-family: Verdana, Geneva, sans-serif;
	color: #363636;
}

#winchm_template_content{
	margin-top: 20px;
	margin-left: 15px;
	margin-bottom: 20px;
	margin-right: 15px;
	width: auto  !important;
	width: 100%;
}

#winchm_template_footer{
	border-width: 1px;
	border-color: #B1CEFE;
	border-top-style: solid;
	margin-top: 15px;
	margin-left: 15px;
	margin-bottom: 20px;
	margin-right: 15px;
	padding-top: 7px;
	padding-left: 0px;
	padding-bottom: 0px;
	padding-right: 0px;
	font-family: arial, helvetica, sans-serif;
	font-size: 8.5pt;
	color: #696969;
	width: auto;
	text-align: left;
}


#winchm_template_container{
	margin: 0px;
	padding: 0px;
	position: static;
	padding-bottom: 3px;
	overflow: auto;
	background-color: #FFFFFF;
}


@media print
{
#winchm_template_container{
	position: static;	
	margin: 0px;
	padding: 5px;
	
	width: auto;
	height: auto;
	overflow: auto;
}
#winchm_template_button{
visibility:hidden;
}
}

#winchm_template_navigation A:link	{text-decoration: none; color:#004080}
#winchm_template_navigation A:visited  {text-decoration: none; color: #004080}
#winchm_template_navigation A:active {text-decoration: none; color: #004080 }
#winchm_template_navigation A:hover {text-decoration: none;color: #0080FF}

A:link	{text-decoration: underline; color:#0033CC}
A:visited  {text-decoration: underline; color: #0033CC}
A:active {text-decoration: underline; color: #0033CC }
A:hover {text-decoration: underline;color: #FF0000;}
</style>
<script type="text/javascript">
function isMobile(){
Agent = window.navigator.userAgent;
if (Agent.indexOf("iPhone")>=1 || Agent.indexOf("iPad")>=1 || Agent.indexOf("iPod")>=1 || Agent.indexOf("Android")>=1){
return true;
}else{
return false;	
}

}
function d_onresize(){
if (window.navigator.userAgent.indexOf("MSIE")>=1){
document.getElementById('winchm_template_container').style.pixelWidth = document.body.offsetWidth - 3;
document.getElementById('winchm_template_container').style.pixelHeight = document.body.offsetHeight - document.getElementById('winchm_template_top').offsetHeight - 4;
}
document.getElementById('winchm_template_container').style.top = document.getElementById('winchm_template_top').offsetHeight + 'px';
}

function d_onbeforeprint(){
document.getElementById('winchm_template_container').style.width = 'auto';
document.getElementById('winchm_template_container').style.height = 'auto';
}

function d_onafterprint(){
d_onresize();
}

if(!isMobile()){

window.onload = d_onresize;
window.onresize = d_onresize;
window.onbeforeprint = d_onbeforeprint;
window.onafterprint = d_onafterprint;

document.write("<style>\n");
document.write("body {overflow: hidden;}\n");
document.write("#winchm_template_container {position: absolute;overflow: auto;top : 0px;right: 0px;bottom: 0px;left: 0px;}\n");
document.write("</style>\n");
}

</script>
</head>
<body><script language="JavaScript" type="text/JavaScript">
function syn(){
if(parent.nav.tree){
 if(parent.nav.tree.loaded){
  parent.nav.tree.selectNode(2517);
 }else{
  setTimeout("syn()",500);
}
  }else{
  setTimeout("syn()",500);
  }}
if(parent!=self){
  setTimeout("syn()",100);
}else{
  parent.location.href = "../../index.htm?page=debugger/gpio_extensions.htm";
}
originalOnload = window.onload;
if(originalOnload==null){
window.onload = function(){parent.contentLoaded = true;};
}else{
window.onload = function(){originalOnload();parent.contentLoaded = true;};
}
</script> 


<div id="winchm_template_top">
	<div id="winchm_template_button"><A href="_bthkd_sdpstream.htm" title="Previous topic"><img id="winchm_template_prev" alt="Previous topic" src="../template2/btn_prev_n.gif" border="0"></a><A href="_gpiokd_help.htm" title="Next topic"><img id="winchm_template_next" alt="Next topic" src="../template2/btn_next_n.gif" border="0"></a></div>
	<div id="winchm_template_navigation">Help &gt; 
<A href="introduction6.htm">Debugging Tools for Windows (WinDbg, KD, CDB, NTSD)</A> &gt; <A href="debugger_reference.htm">Debugger Reference</A> &gt; <A href="debugger_commands.htm">Debugger Commands</A> &gt; <A href="specialized_extensions.htm">Specialized Extension Commands</A> &gt; </div>
	<div id="winchm_template_title">GPIO Extensions</div>
</div>
<div id="winchm_template_container">
	<div id="winchm_template_content"><div id="mainSection"><p>The General Purpose Input/Output (GPIO) extension commands display the software state of GPIO controllers. These commands display information from data structures maintained by the GPIO framework extension driver (Msgpioclx.sys). For information about the GPIO framework extension, see <a href="http://go.microsoft.com/fwlink/p?LinkID=299823">General-Purpose I/O (GPIO) Drivers</a>.</p>
<p>The GPIO debugger extension commands are implemented in gpiokd.dll. To load the GPIO commands, enter <b>.load gpiokd.dll</b> in the debugger.</p>
<p>Each GPIO controller has a set of banks. Each bank has a pin table that has an array of pins. The GPIO debugger extension commands display information about GPIO controllers, banks, pin tables, and pins.</p>
<h2><a id="data_structures_used_by_the_gpio_commands"></a><a id="DATA_STRUCTURES_USED_BY_THE_GPIO_COMMANDS"></a>Data structures used by the GPIO commands</h2>
<p>The GPIO debugger extension commands use these data structures, which are defined by Msgpioclx.sys.</p>
<p></p>
<dl>
<dt><a id="msgpioclx__DEVICE_EXTENSION"></a><a id="msgpioclx__device_extension"></a><a id="MSGPIOCLX__DEVICE_EXTENSION"></a><b>msgpioclx!_DEVICE_EXTENSION</b></dt>
<dd>
<p>The device extension structure for the GPIO framework extension driver. This structure holds information about an individual GPIO controller.</p>
</dd>
<dt><a id="msgpioclx__GPIO_BANK_ENTRY"></a><a id="msgpioclx__gpio_bank_entry"></a><a id="MSGPIOCLX__GPIO_BANK_ENTRY"></a><b>msgpioclx!_GPIO_BANK_ENTRY</b></dt>
<dd>
<p>This structure holds information about an individual bank of a GPIO controller.</p>
</dd>
<dt><a id="msgpioclx__GPIO_PIN_INFORMATION_ENTRY"></a><a id="msgpioclx__gpio_pin_information_entry"></a><a id="MSGPIOCLX__GPIO_PIN_INFORMATION_ENTRY"></a><b>msgpioclx!_GPIO_PIN_INFORMATION_ENTRY</b></dt>
<dd>
<p>This structure holds information about an individual pin in a bank of a GPIO controller.</p>
</dd>
</dl>
<h2><a id="Getting_started_with_GPIO_debugging"></a><a id="getting_started_with_gpio_debugging"></a><a id="GETTING_STARTED_WITH_GPIO_DEBUGGING"></a>Getting started with GPIO debugging</h2>
<p>To start debugging a  GPIO issue, enter the <a href="#Bookmark2520"><b>!gpiokd.clientlist</b></a> command. The <b>!gpiokd.clientlist</b> command displays an overview of all registered GPIO controllers and displays addresses that you can pass to other GPIO debugger commands.</p>
<p>
<h2><a id="in_this_section"></a>In this section</h2>
<table>
<tr>
<th>Topic</th>
<th>Description</th>
</tr>
<tr>
<td>
<p><a href="#Bookmark2518"><b>!gpiokd.help</b></a></p>
</td>
<td>
<p>The <a href="#Bookmark2518"><b>!gpiokd.help</b></a> command displays help for the GPIO debugger extension commands.</p>
</td>
</tr>
<tr>
<td>
<p><a href="#Bookmark2519"><b>!gpiokd.bankinfo</b></a></p>
</td>
<td>
<p>The  <a href="#Bookmark2519"><b>!gpiokd.bankinfo</b></a> command displays information about a GPIO bank.</p>
</td>
</tr>
<tr>
<td>
<p><a href="#Bookmark2520"><b>!gpiokd.clientlist</b></a></p>
</td>
<td>
<p>The  <a href="#Bookmark2520"><b>!gpiokd.clientlist</b></a> command displays all registered GPIO controllers.</p>
</td>
</tr>
<tr>
<td>
<p><a href="#Bookmark2521"><b>!gpiokd.gpioext</b></a></p>
</td>
<td>
<p>The  <a href="#Bookmark2521"><b>!gpiokd.gpioext</b></a> command displays information about a GPIO controller.</p>
</td>
</tr>
<tr>
<td>
<p><a href="#Bookmark2522"><b>!gpiokd.pininfo</b></a></p>
</td>
<td>
<p>The  <a href="#Bookmark2522"><b>!gpiokd.pininfo</b></a> command displays information about a specified GPIO pin.</p>
</td>
</tr>
<tr>
<td>
<p><a href="#Bookmark2523"><b>!gpiokd.pinisrvec</b></a></p>
</td>
<td>
<p>The  <a href="#Bookmark2523"><b>!gpiokd.pinisrvec</b></a> command displays Interrupt Service Routine (ISR) vector information for a specified pin.</p>
</td>
</tr>
<tr>
<td>
<p><a href="#Bookmark2524"><b>!gpiokd.pintable</b></a></p>
</td>
<td>
<p>The  <a href="#Bookmark2524"><b>!gpiokd.pintable</b></a> command displays information about an array of GPIO pins.</p>
</td>
</tr>
</table>
<p> </p>
</p>
<p></p>
<h2><a id="related_topics"></a>Related topics</h2>
<dl>
<dt><a href="#Bookmark2489">Specialized Extension Commands</a></dt></dl></div></div>	
	<div id="winchm_template_footer">Copyright &copy; 2019. All rights 
reserved. (To change the copyright info, just edit it in template.)</div>
</div>

</body>
</html>
